package com.example.usercenterbackend.exception;

import com.example.usercenterbackend.common.ErrorCode;

/**
 * 业务异常类
 * 用于封装业务逻辑中出现的异常情况，包含错误码、错误信息和错误描述
 */
public class BusinessException extends RuntimeException{

    private final int code;

    private final String description;

    /**
     * 构造函数，使用错误码创建业务异常
     * @param errorCode 错误码枚举对象，包含错误码、错误信息和错误描述
     */
    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = errorCode.getDescription();
    }

    /**
     * 构造函数，使用错误码和自定义描述创建业务异常
     * @param errorCode 错误码枚举对象，包含错误码和错误信息
     * @param description 自定义错误描述信息
     */
    public BusinessException(ErrorCode errorCode, String description) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = description;
    }

    /**
     * 构造函数，使用错误码、错误信息和描述创建业务异常
     * @param code 错误码
     * @param message 错误信息
     * @param description 错误描述
     */
    public BusinessException(int code, String message, String description) {
        super(message);
        this.code = code;
        this.description = description;
    }

    /**
     * 获取错误码
     * @return 错误码
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取错误描述
     * @return 错误描述信息
     */
    public String getDescription() {
        return description;
    }
}

